package com.student.dao;

import java.util.List;
import java.util.Map;

import com.student.model.Colleges;
import com.student.model.Profession;
import com.student.model.Student;
import com.student.util.PageInfo;


public interface ProfessionRegisterPaymentDao {
	
	/**
	 * 获取所有学院
	 * @return
	 * @throws Exception
	 */
	public List<Colleges> getAllCollege() throws Exception;
	
	/**
	 * 根据学院ID获取全部专业
	 * @param collogeId  学院ID
	 * @return
	 * @throws Exception
	 */
	public List<Profession> getAllProfession(Long collegeId) throws Exception;
	
	/**
	 * 根据参数取得学生总数
	 * 
	 * @param collegesId
	 *            学院ID, 如果null则代表全部学院
	 * @param professionId
	 *            专业ID, 如果null则代表全部专业
	 * @param isRegister
	 *            是否注册, 已注册为true, 否则为false, 如果null则代表全部
	 * @param sex
	 *            性别, 男为true, 女为false, 如果null则代表全部
	 * @param subjects 科目名称, 如果为null则代表全部
	 * @param area 地区名称, 如果为null则代表全部
	 * @return
	 * @throws Exception
	 */
	public Integer getStudentCount(String campusName,Long collegesId, Long professionId,
			Boolean isRegister, Boolean sex, String subjects, String area) throws Exception;
	
	/**
	 * 根据参数取得学院总数
	 * @param professionId  专业ID, 不能为空
	 * @param clazz 班级, 如果为空则代表全部
	 * @param isRegister 是否注册, 已注册为true, 否则为false, 如果null则代表全部
	 * @param sex 性别, 男为true, 女为false, 如果null则代表全部
	 * @return
	 * @throws Exception
	 */
	public Integer getStudentCount(Long professionId, Integer clazz, Boolean isRegister,
			Boolean sex) throws Exception;
	
	/**
	 * 根据参数获取总缴费金额
	 * @param collegeId  学院ID
	 * @param professionId  专业ID
	 * @param studentId  学院ID
	 * @param isRegister  是否注册
	 * @return
	 * @throws Exception
	 */
	public Double getTotalPaymentAmount(Long collegeId, Long professionId,
			Long studentId, Boolean isRegister) throws Exception;
	
	/**
	 * 根据参数获取总缴费金额
	 * @param ProfessionId  专业ID
	 * @param Clazz  班级, 如果为null没代表全部
	 * @param isRegister  是否注册, 已注册为true, 否则为false, 如果null则代表全部
	 * @return
	 * @throws Exception
	 */
	public Double getTotalPaymentAmount(Long professionId, Integer clazz, 
			Boolean isRegister) throws Exception;
	
	/**
	 * 根据参数获取已缴费金额
	 * @param collegeId  学院ID
	 * @param professionId  专业ID
	 * @param studentId  学生ID
	 * @param isRegister  是否注册, 已注册为true, 否则为false, 如果null则代表全部
	 * @return
	 * @throws Exception
	 */
	public Double getTotalPaidAmount(Long collegeId, Long professionId,
			Long studentId, Boolean isRegister) throws Exception;
	
	/**
	 * 根据参数获取已缴费金额
	 * @param professionId  专业ID
	 * @param clazz  班级
	 * @param isRegister  是否注册, 已注册为true, 否则为false, 如果null则代表全部
	 * @return
	 * @throws Exception
	 */
	public Double getTotalPaidAmount(Long professionId, Integer clazz, 
			Boolean isRegister) throws Exception;
	
	public Profession getProfessionById(Long professionId) throws Exception;
	
}